package root

import (
	"fastdp-ops/cmd/server/client"
	"github.com/spf13/cobra"
)

// Flags 全局参数结构体
type Flags struct {
	Module        string            // 当前使用的模块（如 shell/copy/ping）
	Parameter     map[string]string // 模块参数（键值对形式）
	HostInventory []string          // 主机组或者主机
	Debug         bool              // 调试模式
	Concurrency   int               // 并发数量
}

var (
	GlobalFlags = &Flags{
		Parameter: make(map[string]string), // 初始化参数 map
	}
)

// rootCmd 根命令
var RootCmd = &cobra.Command{
	Use:   "fastdp-ops",
	Short: "轻量级 Ansible 风格运维部署工具",
	Long:  `在指定主机组上执行批量运维操作，支持模块扩展和流程编排。`,
	PersistentPreRun: func(cmd *cobra.Command, args []string) {
		// 初始化全局调试模式
		GlobalFlags.Debug, _ = cmd.Flags().GetBool("debug")
	},
	Run: func(cmd *cobra.Command, args []string) {
		// 根命令默认显示帮助
		_ = cmd.Help()
	},
}

func init() {
	// 全局标志
	RootCmd.PersistentFlags().BoolP("debug", "x", false, "开启调试模式")

	// 注册子命令
	RootCmd.AddCommand(client.RunCmd, client.ExitCmd, client.PlayCmd, client.HostCmd)
}
